package dto

import (
	"fmt"
	"time"
)

// AuthInfo 授权信息
type AuthInfo struct {
	Id       int64  `json:"id,omitempty"`
	Nickname string `json:"nickname,omitempty"`
	Account  string `json:"account,omitempty"`
	Avatar   string `json:"avatar,omitempty"`
	Status   int    `json:"status"`
	SaasId   int64  `json:"saas_id,omitempty"`   // saas模式下用到的归属租户id
	SaasName string `json:"saas_name,omitempty"` // saas模式下用到的归属租户的名称

	//额外的信息
	// 如：
	//	is_root:1
	//  email      //邮箱，user服务下使用
	//  phone      //手机号，user服务下使用
	//  last_ip     //上次登录ip
	//  last_login  //上次登录时间,yyyy-mm-dd hh:mm:ss 格式
	Extends map[string]string `json:"extends"` //额外信息
}

// AuthDataPacket 授权数据包
type AuthDataPacket struct {
	Auth      AuthInfo `json:"auth"`
	ExpiredAt int64    `json:"expired_at"` //到期时间的时间戳，单位：秒
	Token     string   `json:"token"`

	Extends map[string]string `json:"extends"` //额外信息
}

func (c AuthDataPacket) Valid() error {
	if c.ExpiredAt < time.Now().Unix() {
		return fmt.Errorf("auth expired at %d", c.ExpiredAt)
	}
	if c.Auth.Id <= 0 {
		return fmt.Errorf("user invalid")
	}
	return nil
}
